using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace AppManagement.Repositories
{
	#region using
	using AppManagement.Models;
	using AppManagement.Helpers;
	#endregion

	public class TuyenXeRepository
	{
		public static List<TuyenXe> SelectAll()
		{
			try
			{
				return DataContext.Instance.TuyenXe.ToList();
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
			return new List<TuyenXe>();
		}

		public static TuyenXe SelectByID(int matuyenxe)
		{
			try
			{
				return DataContext.Instance.TuyenXe.FirstOrDefault(item => item.MaTuyenXe == matuyenxe );
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
			return null;
		}

		public static bool Insert(TuyenXe obj)
		{
			try
			{
				DataContext.Instance.TuyenXe.AddObject(obj);
				DataContext.Instance.SaveChanges();
				return true;
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
				return false;
		}

		public static bool Delete(int matuyenxe)
		{
			try
			{
				var delitem = DataContext.Instance.TuyenXe.FirstOrDefault(item => item.MaTuyenXe == matuyenxe );
				DataContext.Instance.TuyenXe.DeleteObject(delitem);
				DataContext.Instance.SaveChanges();
				return true;
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
				return false;
		}

		public static bool Save()
		{
			try
			{
				DataContext.Instance.SaveChanges();
				return true;
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
				return false;
		}

		public static List<TuyenXe> RetrieveByID(int matuyenxe)
		{
			try
			{
				return (from item in DataContext.Instance.TuyenXe where  item.MaTuyenXe == matuyenxe  select item).ToList();
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
			return new List<TuyenXe>();
		}

		public static List<TuyenXe> SelectByMaDiemBatDau(int madiembatdau)
		{
			try
			{
			var lstItem = (from item in DataContext.Instance.TuyenXe where item.MaDiemBatDau == madiembatdau select item).ToList();
			return lstItem;
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
			return new List<TuyenXe>();
		}

		public static List<TuyenXe> SelectByMaDiemKetThuc(int madiemketthuc)
		{
			try
			{
			var lstItem = (from item in DataContext.Instance.TuyenXe where item.MaDiemKetThuc == madiemketthuc select item).ToList();
			return lstItem;
			}
			catch(Exception ex)
			{
				if (ex.InnerException != null)
				{
					GlobalVariables.Logger.Error(ex.InnerException.Message);
				}
				else
				{
					GlobalVariables.Logger.Error(ex.Message);
				}
			}
			return new List<TuyenXe>();
		}

        public static List<TuyenXe> Search(string diembatdau, string diemketthuc)
        {
            try
            {
                var diembatdauVal = string.Empty.Equals(diembatdau) ? -1 : int.Parse(diembatdau);
                var diemketthucVal = string.Empty.Equals(diemketthuc) ? -1 : int.Parse(diemketthuc);
                var lstItem = DataContext.Instance.TuyenXe.Where(n =>
                    n.MaDiemBatDau == (string.Empty.Equals(diembatdau) ? n.MaDiemBatDau : diembatdauVal) &&
                    n.MaDiemKetThuc == (string.Empty.Equals(diemketthuc) ? n.MaDiemKetThuc : diemketthucVal)).ToList();
                return lstItem;
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    GlobalVariables.Logger.Error(ex.InnerException.Message);
                }
                else
                {
                    GlobalVariables.Logger.Error(ex.Message);
                }
            }
            return new List<TuyenXe>();
        }

	}

}
